package Controlador;


import Dao.DaoRutas;
import Modelo.FacadeRutas;
import Modelo.Listas;
import Modelo.Rutas;
import Vista.JFrameRutas;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.logging.Level;
import java.util.logging.Logger;


public class ControladorRutas implements ActionListener,KeyListener
{
    private JFrameRutas formRutas;
    private FacadeRutas facadeRutas=new FacadeRutas();

           public ControladorRutas() 
     {
        
        formRutas = new JFrameRutas();
        formRutas.agregarListener(this, this);
        formRutas.setVisible(true);
        Enabled(false);
      
        
        formRutas.getTxtCodigoR().addKeyListener(new KeyAdapter() 
        {
            public void keyTyped(KeyEvent e) 
            {
                CodigoRKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) 
            {
               CodigoRkeyPressed(e);
            }
            
             

             
        });
        formRutas.getTxtDestinoR().addKeyListener(new KeyAdapter() 
        {
            public void keyTyped(KeyEvent e) 
            {
                DestinoRKeyTyped(e);
            }

             
        });
     }
    //----------------------------------------------
           private void Enabled(boolean Status) 
    {
        formRutas.getTxtCodigoR().setEnabled(!Status);
        formRutas.getTxtDestinoR().setEnabled(!Status);
        formRutas.getCmbEstadoR().setEnabled(!Status);
        formRutas.getCmbDescripcionR().setEnabled(!Status);
    }
    
           //Limpia el contenido de las cajas de texto
    //------------------------------------------
    private void Limpiar() {
        formRutas.getTxtCodigoR().setText("");
        formRutas.getTxtDestinoR().setText("");
        
    }

    

    //Ingresa una nueva ruta en la lista de choferes
    //------------------------------------------------
  private void Grabar() 
  {
    facadeRutas.ActualizarRutas(formRutas);
    
    Mensajes.Aviso("Ruta guardado con exito", "");
    Limpiar();
    Enabled(false);
    formRutas.getTxtCodigoR().requestFocusInWindow();            
  }
  //-------------------------------
        private void CodigokeyPressed(KeyEvent e) throws SQLException 
     {
        ResultSet registroRutas;
        DaoRutas daoRutas=new DaoRutas();
      
         
         if (e.getSource().equals(formRutas.getTxtCodigoR())) 
        {

            String Cadena;
            int PosiRut;
            Rutas rutas = new Rutas();
            Cadena = formRutas.getTxtCodigoR().getText();

            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 8) 
            {
                Mensajes.Aviso("Codigo invalido", "");
                formRutas.getTxtCodigoR().requestFocusInWindow();
            }
            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() == 8) 
            {

                    registroRutas=daoRutas.BuscarRutas(Cadena);
                                
                if (registroRutas.next())                                
                {
                    formRutas.getCmbDescripcionR().setSelectedItem(registroRutas.getString("descripcionr"));                                                        
                    formRutas.getTxtDestinoR().setText(registroRutas.getString("destino"));                    
                    formRutas.getCmbEstadoR().setSelectedItem(registroRutas.getString("estado"));                                                                                   
                    
                    

                    
                    Mensajes.Aviso("Ruta ya Existe", "");
                    Limpiar();

                } else 
                {
                    Enabled(true);
                    formRutas.getTxtDestinoR().requestFocusInWindow();

                }
            }

        }
    }
//---------------------------------------------------------

//-------------------------------------------     
    @Override
    public void actionPerformed(ActionEvent e) 
     {
        if (e.getSource().equals(formRutas.getBtnBuscarR()))
      {
             try 
             {  
                 new ControladorConsulRutas();
             } catch (SQLException ex) 
             {
                 Logger.getLogger(ControladorRutas.class.getName()).log(Level.SEVERE, null, ex);
             }
      }
         if (e.getSource().equals(formRutas.getBtnSalirR())) 
         {
            formRutas.dispose();
        }
        if (e.getSource().equals(formRutas.getBtnGuardarR())) 
        {
            Grabar();
        }
        if (e.getSource().equals(formRutas.getBtnEliminarR())) {
            Limpiar();
            Enabled(false);
        }
    }

    @Override
    public void keyTyped(KeyEvent e) 
    {
        
    
    }

    @Override
    public void keyPressed(KeyEvent e) 
    {
        if (e.getSource().equals(formRutas.getTxtCodigoR())) 
        {
            CodigoRkeyPressed(e);
        }
    }

    @Override
    public void keyReleased(KeyEvent e) 
    {
        
    }
//-------------------------------------------

    private void CodigoRKeyTyped(java.awt.event.KeyEvent evt) 
    {
        String Cadena;
        char Caracter;

        Cadena = formRutas.getTxtCodigoR().getText();
        if (Cadena.length() == 8) 
        {
            evt.consume();
        } else 
        {
            Caracter = evt.getKeyChar();

            if (Caracter == '.') 
            {
                evt.consume();
            }

            
        }
    }
    private void CodigoRkeyPressed(KeyEvent e) 
    {
       if (e.VK_ENTER == e.getKeyCode()) 
        {
            formRutas.getTxtDestinoR().requestFocusInWindow();
        }          
    }

    private void DestinoRKeyTyped(java.awt.event.KeyEvent evt) 
    {
     String Cadena;
        String CarString;
        char Caracter;

        Cadena = formRutas.getTxtDestinoR().getText();
        if (Cadena.length() == 20) 
        {
            evt.consume();
        } else 
        {
            Caracter = evt.getKeyChar();

            CarString = Caracter + "";
            CarString = CarString.toUpperCase();
            Caracter = CarString.charAt(0);

            if (Caracter == ' ') 
            {
                return;
            }

            if (Caracter < 'A' || Caracter > 'Z') 
            {
                evt.consume();
            }

        }

   
    }
    
    
    
    
    
    
    
    
    
}